import { login, getuserinfo, getuserByid } from '@/api/user.js'
import { getToken, setToken, removeToken, setTokenTime } from '@/utils/auth.js'
import { resetRouter } from '@/router/index'
export default {
  namespaced: true,
  state: {
    // 获取本地存储中的token
    // token: localStorage.getItem('token') || ''
    token: getToken() || '',
    // 用户信息
    userinfo: {}
  },
  getters: {},
  mutations: {
    // 将数据存储到vuex当中
    setToken(state, payload) {
      state.token = payload
      // 设置token到本地存储
      // localStorage.setItem('token', payload)
      setToken(payload)
    },
    // 删除数据
    delToken(state) {
      state.token = ''
      // 删除token
      // localStorage.removeItem('token')
      removeToken()
    },
    // 添加用户信息
    setuserinfo(state, payload) {
      state.userinfo = payload
    },
    // 删除用户信息
    deluserinfo(state) {
      state.userinfo = {}
    }
  },
  actions: {
    // 退出登录
    loginout(context) {
      context.commit('delToken')
      context.commit('deluserinfo')
      // 重置路由
      resetRouter()
    },
    async UserLogin(context, loginForm) {
      // 发送请求,,
      const data = await login(loginForm)
      console.log(data)
      // 存储token
      context.commit('setToken', data.data)
      // 获取token存入的时间
      setTokenTime()
      console.log(1111)
    },
    // 获取用户信息
    async setuserinfo(context) {
      try {
        const { data } = await getuserinfo()
        console.log(data)
        // 获取员工头像
        const res = await getuserByid(data.userId)
        console.log(res)
        // 将数据传给mutations    将两个对象合并到一个对象中
        context.commit('setuserinfo', { ...data, ...res.data })
        // 返回权限信息给路由守卫
        return data.roles.menus
      } catch (error) {
        console.log('用户信息获取失败')
      }
    }
  },
  modules: {}
}
